/**
 * todo 题目应该不是想要这种实现
 * 实现一个 Trie (前缀树)，包含 insert, search, 和 startsWith 这三个操作。
    示例:
    Trie trie = new Trie();
    trie.insert("apple");
    trie.search("apple"); // 返回 true
    trie.search("app"); // 返回 false
    trie.startsWith("app"); // 返回 true
    trie.insert("app");
    trie.search("app"); // 返回 true
    说明: 
    1. 你可以假设所有的输入都是由小写字母 a-z 构成的。
    2. 保证所有输入均为非空字符串
 */
class Trie {
    constructor() {
        this.map = new Set();
    }
    insert(key) {
        this.map.add(key);
    }
    search(key){
        return this.map.has(key);
    }
    startsWith(key){
        for(var key of this.map){
            if(key.startsWith(key)){
                return true;
            }
        }
        return false;
    }
}

var trie = new Trie();
trie.insert("apple");
console.log(trie.search("apple")); // 返回 true
console.log(trie.search("app")); // 返回 false

console.log(trie.startsWith("app")); // 返回 true
trie.insert("app");
console.log(trie.search("app")); // 返回 true